<?php

// 指定错误报告的等级
error_reporting(E_ALL);

//define('DR_VERSION', '1.2.1');

if (((float)phpversion()) < 4.3)
	qa_fatal_error('This requires PHP 4.3 or later');

@ini_set('magic_quotes_runtime', 0);


/*
	  返回：html格式的数据
   */
function dr_html($string, $multiline = false)
{
	$html = htmlentities($string, ENT_QUOTES, 'UTF-8');

	if ($multiline) {
		$html = preg_replace('/\r\n?/', "\n", $html);
		$html = preg_replace('/(?<=\s) /', '&nbsp;', $html);
		$html = str_replace("\t", '&nbsp; &nbsp; ', $html);
		$html = nl2br($html);
	}

	return $html;
}


/**
 * 返回：引用方式传递，更改参数为html格式
 */
function dr_to_html(&$array)
{
	if (is_array($array)) {
		foreach ($array as $key => $value)
			dr_to_html($array[$key]);
	}
	else
	{
		$array = dr_html($array, true);
	}
}


/*
		 返回：JS格式的数据
   */
function dr_js($value)
{
	if (is_numeric($value))
		return $value;
	else
		return "'" . strtr($value, array(
		                                "'" => "\\'",
		                                '\\' => '\\\\',
		                                "\n" => "\\n",
		                                "\r" => "\\n",
		                           )) . "'";
}


/**
 * 对于从GET/POST/COOKIE过来的数据，去除转义符号\
 * 返回：没有转义符号的string字符串
 */
function dr_gpc_to_string($string)
{
	return get_magic_quotes_gpc() ? stripslashes($string) : $string;
}


/**
 * 将字符串中的特殊符号，加上转义字符\
 * 返回：加上转义符号的string字符串
 */
function dr_string_to_gpc($string)
{
	return get_magic_quotes_gpc() ? addslashes($string) : $string;
}

/**
 * 从GET方法获取字符串，并去除转义字符
 * 返回：GET获取的字符数据
 */
function dr_get($field)
{
	return isset($_GET[$field]) ? dr_gpc_to_string($_GET[$field]) : null;
}


/**
 * 从POST方法获取字符串，并去除转义字符和字符串两端的空白字符
 * 返回：POST获取的字符数据
 */
function dr_post($field)
{
	return isset($_POST[$field]) ? preg_replace('/\r\n?/', "\n", trim(dr_gpc_to_string($_POST[$field]))) : null;
}


/*
	  判断是否为HTTP POST请求
	  返回：如果是HTTP POST请求，返回true；否则返回false
   */
function dr_is_http_post()
{
	return ($_SERVER['REQUEST_METHOD'] == 'POST') || !empty($_POST);
}


/*
	  判断是否是HTTPS请求
	  返回：如果是HTTPS请求，则为true；否则为false
   */
function dr_is_https_probably()
{
	return (@$_SERVER['HTTPS'] && ($_SERVER['HTTPS'] != 'off')) || (@$_SERVER['SERVER_PORT'] == 443);
}


/*************************错误信息提示模块***************************/
/*
	  显示错误信息
   */
function dr_fatal_error($message)
{
	echo '<FONT COLOR="red">' . dr_html($message) . '</FONT>';
	exit;
}


/*
		异常终止
	*/
function dr_db_fail_handler($type, $errno = null, $error = null, $query = null)
{
	$pass_failure_type = $type;
	$pass_failure_errno = $errno;
	$pass_failure_error = $error;
	$pass_failure_query = $query;

	//require dr_INCLUDE_DIR.'qa-install.php';
	echo "error occurs...<br/>";
	echo "fail type:" . $pass_failure_type . '<br/>';
	if (isset($errno))
		echo "errno:" . $errno . '<br/>';
	if (isset($error))
		echo "error:" . $error . '<br/>';
	if (isset($errno))
		echo "query:" . $query . '<br/>';

	exit;
}
